package com.internetCafes.spms.web.customer.controller;


import com.internetCafes.spms.common.utils.entity.RR;
import com.internetCafes.spms.common.utils.entity.page.PageItemDTO;
import com.internetCafes.spms.common.utils.entity.page.PageItemVO;
import com.internetCafes.spms.web.customer.bizservice.dict.IEntDictBizService;
import com.internetCafes.spms.web.customer.model.dict.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import com.internetCafes.spms.common.base.BaseWebController;

import java.util.List;

/**
 * <p>
 * 企业字典表 前端控制器
 * </p>
 *
 * @author Zj
 * @since 2021-11-19
 */
@RestController
@RequestMapping("/ent/dict")
public class EntDictController extends BaseWebController {

    @Autowired
    private IEntDictBizService dictValueBizService;

    /**
     * 字典表值分页
     */
    @PostMapping("/value/paging")
    @RequiresPermissions("ent:dict:valuePaging")
    public RR<PageItemVO<EntDictValueListRes>> pagingValue(@RequestBody PageItemDTO<EntDictValueDo> req){
        PageItemVO<EntDictValueListRes> paging = dictValueBizService.pagingValue(req);
        return RR.success(paging);
    }

    /**
     * 字典表值列表
     */
    @PostMapping("/value/list")
    public RR<List<EntDictValueListRes>> listValue(@RequestBody EntDictValueReq req) {
        return RR.success(dictValueBizService.listValue(req));
    }

    /**
     * 字典表值保存
     */
    @PostMapping("/value/save")
    @RequiresPermissions("ent:dict:valueSave")
    public RR<Void> saveValue(@RequestBody @Validated EntDictValueConfigReq req) {
        return  dictValueBizService.saveValue(req)?RR.success(): RR.fail();
    }

    /**
     * 字典表值修改
     */
    @PutMapping("/value")
    @RequiresPermissions("ent:dict:valueUpdate")
    public RR<Void> updateValue(@RequestBody @Validated EntDictValueConfigReq req) {
        return  dictValueBizService.updateValue(req) ? RR.success() : RR.fail();
    }

    /**
     * 通过id禁用字典表值
     * @param idList id列表
     */
    @PutMapping("/value/disable/{idList}")
    @RequiresPermissions("ent:dict:valueUpdate")
    public RR<Void> disableValue(@PathVariable List<Long> idList){
        return dictValueBizService.disableValueByIdList(idList) ? RR.success() : RR.fail();
    }

    /**
     * 通过id启用字典表值
     * @param idList id列表
     */
    @PutMapping("/value/enable/{idList}")
    @RequiresPermissions("ent:dict:valueUpdate")
    public RR<Void> enableValue(@PathVariable List<Long> idList) {
        return dictValueBizService.enableValueByIdList(idList) ? RR.success() : RR.fail();
    }

    /**
     * 整合字典表值列表
     */
    @GetMapping("/list")
    @RequiresPermissions("ent:dict:list")
    public RR<List<EntDictCodeListRes>> list(){
        return RR.success(dictValueBizService.list());
    }

}
